package br.com.mynage.dao.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;

import org.hibernate.Session;

import br.com.mynage.dao.IArquivoDao;
import br.com.mynage.dominio.ArquivoTarefa;
import br.com.mynage.dominio.Tarefa;
import br.com.mynage.exception.DaoException;

public class ArquivoDaoImpl extends GenericDaoImpl<ArquivoTarefa> implements IArquivoDao {
	/**Retorna arquivos passando como parâmetro uma tarefa */
	@SuppressWarnings("unchecked")
	public ArquivoTarefa findArquivotarefa(Tarefa tarefa) throws DaoException {
		EntityManager manager = getEntityManager();
		List<ArquivoTarefa> resul = new ArrayList<ArquivoTarefa>();
		
		try {  
			
			Session session = (Session) manager.getDelegate();
			
			String sql = "SELECT id, nome, extensao FROM arquivo_tarefa " +
					"WHERE id_tarefa = " + tarefa.getId();
			
			List<Object[]> rs = session.createSQLQuery(sql).list();
			
			for(Object o[]:rs) {
				int i = 0;
				ArquivoTarefa at = new ArquivoTarefa();
				at.setId((Integer)o[i++]);
				at.setNome((String)o[i++]);
				at.setExtensao((String)o[i++]);
				
				resul.add(at);
			}

			return resul.iterator().next(); 
		} catch (Exception e) {
			e.printStackTrace();
			throw new DaoException();
		} finally {
			if (manager != null) 
				manager.close(); 
		}
	}

	@Override
	public Class<ArquivoTarefa> getClassType() {
		return ArquivoTarefa.class;
	}


}
